package com.wjw.java.collection.list_;

import java.util.ArrayList;
import java.util.List;

/**
 * ArrayList是List接口的实现类
 * -------------------------------------------------------------------------
 * transient关键字,表示瞬间的、短暂的被transient修饰的字段无法被序列化和反序列化
 * -------------------------------------------------------------------------
 * ArrayList细节：
 * 1.ArrayList是有序的,可以存储重复元素的集合
 * 2.ArrayList允许存储null,且多个
 * 3.ArrayList(线程不安全的)基本等同于Vector(线程安全的)
 * 4.ArrayList底层是由数组来实现数据存储的
 * -------------------------------------------------------------------------
 * 底层源码分析：
 * 1.ArrayList中维护了一个Object类型的数组,transient Object[] elementData;
 * 2.创建ArrayList时,
 * 如果使用的无参构造new ArrayList(),则elementData初始容量为0,
 * 第一次添加则扩容elementData到10,如果再次扩容则扩容elementData为1.5倍
 * 3.创建ArrayList时,
 * 如果使用的是指定大小的构造器new ArrayList(20),则初始elementData为指定大小,
 * 如果需要扩容则扩容elementData为1.5倍
 * -------------------------------------------------------------------------
 */
public class Detail_ArrayList {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(null);
        list.add("你好啊！");
        list.add(null);
        System.out.println(list);
    }
}
